home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / role / roleplay.0-s / roleplay / RolePlaying-1.0 / scripts / CHARFunctions next >
Text File  |  1995-07-09  |  13KB  |  362 lines

  1. # Module: CHARFunctions
  2. # Tcl version: 7.3 (Tcl/Tk/XF)
  3. # Tk version: 3.6
  4. # XF version: $__lastrelease$
  5. #
  6.  
  7. # module contents
  8. global moduleList
  9. global autoLoadList
  10. set moduleList(CHARFunctions) { AdvanceCharacterLevel .top10 ReRollCharacter ResetCharacterForm RollCharacter RollCharacterCancel RollCharacterHelp RollCharacterOk UpdateCharacter}
  11. set autoLoadList(CHARFunctions) {1}
  12.  
  13. # procedures to show toplevel windows
  14.  
  15.  
  16. # procedure to show window ShowWindow.top10
  17. proc ShowWindow.top10 { args} {
  18. # xf ignore me 7
  19.  
  20.   # build widget .top10
  21.   if {"[info procs XFEdit]" != ""} {
  22.     catch "XFDestroy .top10"
  23.   } {
  24.     catch "destroy .top10"
  25.   }
  26.   toplevel .top10 
  27.  
  28.   # Window manager configurations
  29.   global tkVersion
  30.   wm positionfrom .top10 ""
  31.   wm sizefrom .top10 ""
  32.   wm maxsize .top10 1000 768
  33.   wm minsize .top10 10 10
  34.   wm title .top10 {Roll A New Character}
  35.  
  36.  
  37.   # build widget .top10.frame0
  38.   frame .top10.frame0  -borderwidth {2}
  39.  
  40.   # build widget .top10.frame0.entry1
  41.   entry .top10.frame0.entry1  -relief {sunken} -width {1}
  42.  
  43.   # build widget .top10.frame0.entry3
  44.   entry .top10.frame0.entry3  -relief {sunken} -width {1}
  45.  
  46.   # build widget .top10.frame0.entry4
  47.   entry .top10.frame0.entry4  -relief {sunken} -width {1}
  48.  
  49.   # build widget .top10.frame0.entry5
  50.   entry .top10.frame0.entry5  -relief {sunken} -width {3}
  51.  
  52.   # build widget .top10.frame0.entry6
  53.   entry .top10.frame0.entry6  -relief {sunken} -width {1}
  54.  
  55.   # build widget .top10.frame0.entry8
  56.   entry .top10.frame0.entry8  -relief {sunken} -width {3}
  57.  
  58.   # build widget .top10.frame0.label0
  59.   label .top10.frame0.label0  -text {Hit Dice:}
  60.  
  61.   # build widget .top10.frame0.label1
  62.   label .top10.frame0.label1  -text {Max Hit Dice:}
  63.  
  64.   # build widget .top10.frame0.label2
  65.   label .top10.frame0.label2  -text {d}
  66.  
  67.   # build widget .top10.frame0.label3
  68.   label .top10.frame0.label3  -text {Abitity Dice:}
  69.  
  70.   # build widget .top10.frame0.label5
  71.   label .top10.frame0.label5  -text {d}
  72.  
  73.   # build widget .top10.frame0.label7
  74.   label .top10.frame0.label7  -text {Best of:}
  75.  
  76.   # pack widget .top10.frame0
  77.   pack append .top10.frame0  .top10.frame0.label3 {left frame center}  .top10.frame0.entry4 {left frame center}  .top10.frame0.label5 {left frame center}  .top10.frame0.entry6 {left frame center}  .top10.frame0.label0 {left frame e expand}  .top10.frame0.entry1 {left frame center}  .top10.frame0.label2 {left frame center}  .top10.frame0.entry3 {left frame center}  .top10.frame0.label7 {left frame e expand}  .top10.frame0.entry8 {left frame e}  .top10.frame0.label1 {left frame center}  .top10.frame0.entry5 {left frame center} 
  78.  
  79.   # build widget .top10.frame13
  80.   frame .top10.frame13  -borderwidth {2}
  81.  
  82.   # build widget .top10.frame13.label14
  83.   label .top10.frame13.label14  -text {S:}
  84.  
  85.   # build widget .top10.frame13.label15
  86.   label .top10.frame13.label15  -relief {sunken} -text {} -width {5}
  87.  
  88.   # build widget .top10.frame13.label16
  89.   label .top10.frame13.label16  -text {I:}
  90.  
  91.   # build widget .top10.frame13.label17
  92.   label .top10.frame13.label17  -relief {sunken} -text {} -width {5}
  93.  
  94.   # build widget .top10.frame13.label18
  95.   label .top10.frame13.label18  -text {W:}
  96.  
  97.   # build widget .top10.frame13.label19
  98.   label .top10.frame13.label19  -relief {sunken} -text {} -width {5}
  99.  
  100.   # build widget .top10.frame13.label20
  101.   label .top10.frame13.label20  -text {D:}
  102.  
  103.   # build widget .top10.frame13.label21
  104.   label .top10.frame13.label21  -relief {sunken} -text {} -width {5}
  105.  
  106.   # build widget .top10.frame13.label22
  107.   label .top10.frame13.label22  -text {C:}
  108.  
  109.   # build widget .top10.frame13.label23
  110.   label .top10.frame13.label23  -relief {sunken} -text {} -width {5}
  111.  
  112.   # build widget .top10.frame13.label24
  113.   label .top10.frame13.label24  -text {CH:}
  114.  
  115.   # build widget .top10.frame13.label25
  116.   label .top10.frame13.label25  -relief {sunken} -text {} -width {5}
  117.  
  118.   # pack widget .top10.frame13
  119.   pack append .top10.frame13  .top10.frame13.label14 {left frame center expand}  .top10.frame13.label15 {left frame center expand}  .top10.frame13.label16 {left frame center expand}  .top10.frame13.label17 {left frame center expand}  .top10.frame13.label18 {left frame center expand}  .top10.frame13.label19 {left frame center expand}  .top10.frame13.label20 {left frame center expand}  .top10.frame13.label21 {left frame center expand}  .top10.frame13.label22 {left frame center expand}  .top10.frame13.label23 {left frame center expand}  .top10.frame13.label24 {left frame center expand}  .top10.frame13.label25 {right frame center expand} 
  120.  
  121.   # build widget .top10.frame28
  122.   frame .top10.frame28  -borderwidth {2}
  123.  
  124.   # build widget .top10.frame28.button29
  125.   button .top10.frame28.button29  -command {ReRollCharacter} -text {ReRoll}
  126.  
  127.   # build widget .top10.frame28.button30
  128.   button .top10.frame28.button30  -command {RollCharacterOk} -text {Ok}
  129.  
  130.   # build widget .top10.frame28.button31
  131.   button .top10.frame28.button31  -command {RollCharacterCancel} -text {Cancel}
  132.  
  133.   # build widget .top10.frame28.button32
  134.   button .top10.frame28.button32  -command {RollCharacterHelp} -text {Help}
  135.  
  136.   # pack widget .top10.frame28
  137.   pack append .top10.frame28  .top10.frame28.button29 {left frame center expand}  .top10.frame28.button30 {left frame center expand}  .top10.frame28.button31 {left frame center expand}  .top10.frame28.button32 {right frame center expand} 
  138.  
  139.   # build widget .top10.label12
  140.   label .top10.label12  -font {-Adobe-Helvetica-Bold-R-Normal--*-240-*} -text {Rolling A New Character}
  141.  
  142.   # pack widget .top10
  143.   pack append .top10  .top10.label12 {top frame center}  .top10.frame0 {top frame center expand fillx}  .top10.frame13 {top frame center}  .top10.frame28 {top frame center expand fillx} 
  144.  
  145.   if {"[info procs XFEdit]" != ""} {
  146.     XFEditSetShowWindows
  147.     XFMiscBindWidgetTree .top10
  148.   }
  149.  
  150.   .top10.frame0.entry1 insert end {1}
  151.   .top10.frame0.entry3 insert end {6}
  152.   .top10.frame0.entry4 insert end {3}
  153.   .top10.frame0.entry5 insert end {10}
  154.   .top10.frame0.entry6 insert end {6}
  155.   .top10.frame0.entry8 insert end {10}
  156. }
  157.  
  158. proc DestroyWindow.top10 {} {# xf ignore me 7
  159.   if {"[info procs XFEdit]" != ""} {
  160.     if {"[info commands .top10]" != ""} {
  161.       global xfShowWindow.top10
  162.       set xfShowWindow.top10 0
  163.       XFEditSetPath .
  164.       after 200 "XFSaveAsProc .top10; XFEditSetShowWindows"
  165.     }
  166.   } {
  167.     catch "destroy .top10"
  168.     update
  169.   }
  170. }
  171.  
  172.  
  173. # User defined procedures
  174.  
  175.  
  176. # Procedure: AdvanceCharacterLevel
  177. proc AdvanceCharacterLevel {} {
  178.   global CurrentCharacter
  179.   if {$CurrentCharacter(handle) != {}} {
  180.     UpdateCharacter
  181.     $CurrentCharacter(handle) advancelevel
  182.     set CurrentCharacter(isdirty) 1
  183.     ResetCharacterForm
  184.   }
  185. }
  186.  
  187.  
  188. # Procedure: ReRollCharacter
  189. proc ReRollCharacter {} {
  190.   set sides  [[SN RollNSides] get]
  191.   set dice   [[SN RollNDice] get]
  192.   set bestof [[SN RollBestOf] get]
  193.   set abilityDice [Dice $sides $dice]
  194.   set best(strength) 0
  195.   set best(intelligence) 0
  196.   set best(wisdom) 0
  197.   set best(dexterity) 0
  198.   set best(constitution) 0
  199.   set best(chrisma) 0
  200.   for {set i 0} {$i < $bestof} {incr i} {
  201.     foreach a {strength intelligence wisdom dexterity constitution chrisma} {
  202.       set current($a) [$abilityDice roll]
  203.     }
  204.     set isbetter 0
  205.     foreach a {strength intelligence wisdom dexterity constitution chrisma} {
  206.       if {$current($a) > $best($a)} {
  207.     incr isbetter
  208.       }
  209.     }
  210.     if {$isbetter > 3} {
  211.       foreach a {strength intelligence wisdom dexterity constitution chrisma} {
  212.     set best($a) $current($a)
  213.       }
  214.     }
  215.   }
  216.   [SN RollStrength] configure -text [format "%d" $best(strength)]
  217.   [SN RollIntelligence] configure -text [format "%d" $best(intelligence)]
  218.   [SN RollWisdom] configure -text [format "%d" $best(wisdom)]
  219.   [SN RollDexterity] configure -text [format "%d" $best(dexterity)]
  220.   [SN RollConstitution] configure -text [format "%d" $best(constitution)]
  221.   [SN RollChrisma] configure -text [format "%d" $best(chrisma)]
  222.   $abilityDice delete
  223. }
  224.  
  225.  
  226. # Procedure: ResetCharacterForm
  227. proc ResetCharacterForm {} {
  228.   global CurrentCharacter
  229.   [SN CharacterAge] delete 0 end
  230.   [SN CharacterAlignment] delete 0 end
  231.   [SN CharacterChrisma] delete 0 end
  232.   [SN CharacterClass] delete 0 end
  233.   [SN CharacterConstitution] delete 0 end
  234.   [SN CharacterDexterity] delete 0 end
  235.   [SN CharacterExperiencePoints] delete 0 end
  236.   [SN CharacterIntelligence] delete 0 end
  237.   [SN CharacterName] delete 0 end
  238.   [SN CharacterPlayer] delete 0 end
  239.   [SN CharacterRace] delete 0 end
  240.   [SN CharacterSex] delete 0 end
  241.   [SN CharacterStrength] delete 0 end
  242.   [SN CharacterEStrength] delete 0 end
  243.   [SN CharacterWisdom] delete 0 end
  244.   [SN CharacterCommentary] delete 1.0 end
  245.   [SN CharacterLevel] configure -text {}
  246.   [SN CharacterHitPoints] configure -text {}
  247.   if {$CurrentCharacter(handle) != {}} {
  248.     [SN CharacterAge] insert end [$CurrentCharacter(handle) age]
  249.     [SN CharacterAlignment] insert end [$CurrentCharacter(handle) alignment]
  250.     [SN CharacterChrisma] insert end [$CurrentCharacter(handle) chrisma]
  251.     [SN CharacterClass] insert end [$CurrentCharacter(handle) class]
  252.     [SN CharacterConstitution] insert end [$CurrentCharacter(handle) constitution]
  253.     [SN CharacterDexterity] insert end [$CurrentCharacter(handle) dexterity]
  254.     [SN CharacterExperiencePoints] insert end [$CurrentCharacter(handle) experiencepoints]
  255.     [SN CharacterIntelligence] insert end [$CurrentCharacter(handle) intelligence]
  256.     [SN CharacterName] insert end [$CurrentCharacter(handle) name]
  257.     [SN CharacterPlayer] insert end [$CurrentCharacter(handle) player]
  258.     [SN CharacterRace] insert end [$CurrentCharacter(handle) race]
  259.     [SN CharacterSex] insert end [$CurrentCharacter(handle) sex]
  260.     [SN CharacterStrength] insert end [$CurrentCharacter(handle) strength]
  261.     set es [$CurrentCharacter(handle) exceptional_strength]
  262.     if {$es != 0} {
  263.       if {$es == 100} {
  264.     [SN CharacterEStrength] insert end {(00)}
  265.       } else {
  266.     [SN CharacterEStrength] insert end [format "(%02d)" $es]
  267.       }
  268.     }
  269.     [SN CharacterWisdom] insert end [$CurrentCharacter(handle) wisdom]
  270.     [SN CharacterCommentary] insert end [$CurrentCharacter(handle) comments]
  271.     [SN CharacterLevel] configure -text [$CurrentCharacter(handle) level]
  272.     [SN CharacterHitPoints] configure -text [$CurrentCharacter(handle) hitpoints]
  273.   }
  274. }
  275.  
  276.  
  277. # Procedure: RollCharacter
  278. proc RollCharacter {} {
  279.   ShowWindow[SN RollCharacter]
  280.   ReRollCharacter
  281.   update idletask
  282.   grab [SN RollCharacter]
  283.   tkwait window [SN RollCharacter]
  284.   global RollResults
  285.   if {$RollResults(button) != {ok}} {
  286.     return {}
  287.   } else {
  288.     return [list $RollResults(strength) $RollResults(intelligence)  $RollResults(wisdom) $RollResults(dexterity)  $RollResults(constitution) $RollResults(chrisma)  $RollResults(nhitd) $RollResults(hitds)  $RollResults(maxdie)]
  289.   }
  290. }
  291.  
  292.  
  293. # Procedure: RollCharacterCancel
  294. proc RollCharacterCancel {} {
  295.   global RollResults
  296.   set RollResults(button) {cancel}
  297.   DestroyWindow[SN RollCharacter]
  298. }
  299.  
  300.  
  301. # Procedure: RollCharacterHelp
  302. proc RollCharacterHelp {} {
  303.   PopupHelpTopic RollCharacter
  304. }
  305.  
  306.  
  307. # Procedure: RollCharacterOk
  308. proc RollCharacterOk {} {
  309.   global RollResults
  310.   set RollResults(strength) [lindex [[SN RollStrength] configure -text] 4]
  311.   set RollResults(intelligence) [lindex [[SN RollIntelligence] configure -text] 4]
  312.   set RollResults(wisdom) [lindex [[SN RollWisdom] configure -text] 4]
  313.   set RollResults(dexterity) [lindex [[SN RollDexterity] configure -text] 4]
  314.   set RollResults(constitution) [lindex [[SN RollConstitution] configure -text] 4]
  315.   set RollResults(chrisma) [lindex [[SN RollChrisma] configure -text] 4]
  316.   set RollResults(nhitd) [[SN RollNHitDice] get]
  317.   set RollResults(hitds) [[SN RollHitDiceSides] get]
  318.   set RollResults(maxdie) [[SN RollMaxHitDice] get]
  319.   set RollResults(button) {ok}
  320.   DestroyWindow[SN RollCharacter]
  321. }
  322.  
  323.  
  324. # Procedure: UpdateCharacter
  325. proc UpdateCharacter {} {
  326.   global CurrentCharacter
  327.   if {$CurrentCharacter(handle) != {}} {
  328.     $CurrentCharacter(handle) age [[SN CharacterAge] get]
  329.     $CurrentCharacter(handle) alignment [[SN CharacterAlignment] get]
  330.     $CurrentCharacter(handle) chrisma [[SN CharacterChrisma] get]
  331.     $CurrentCharacter(handle) class [[SN CharacterClass] get]
  332.     $CurrentCharacter(handle) constitution [[SN CharacterConstitution] get]
  333.     $CurrentCharacter(handle) dexterity [[SN CharacterDexterity] get]
  334.     $CurrentCharacter(handle) experiencepoints [[SN CharacterExperiencePoints] get]
  335.     $CurrentCharacter(handle) intelligence [[SN CharacterIntelligence] get]
  336.     $CurrentCharacter(handle) name [[SN CharacterName] get]
  337.     $CurrentCharacter(handle) player [[SN CharacterPlayer] get]
  338.     $CurrentCharacter(handle) race [[SN CharacterRace] get]
  339.     $CurrentCharacter(handle) sex [[SN CharacterSex] get]
  340.     $CurrentCharacter(handle) strength [[SN CharacterStrength] get]
  341.     set es [[SN CharacterEStrength] get]
  342.     set esv 0
  343.     if {[scan $es "(%02d)" esv] == 0} {
  344.       $CurrentCharacter(handle) exceptional_strength 0
  345.     } elseif {$esv == 0} {
  346.       $CurrentCharacter(handle) exceptional_strength 100
  347.     } else {
  348.       $CurrentCharacter(handle) exceptional_strength $esv
  349.     }
  350.     $CurrentCharacter(handle) wisdom [[SN CharacterWisdom] get]
  351.     $CurrentCharacter(handle) comments [[SN CharacterCommentary] get 1.0 end]
  352.     set CurrentCharacter(isdirty) 1
  353.   }
  354. }
  355.  
  356.  
  357. # Internal procedures
  358.  
  359. # eof
  360. #
  361.  
  362.